package com.huangkailong.designpattern.proxy.dynamicproxy;

import java.lang.reflect.Proxy;

/**
 * @author huangkl
 * @since 1.0.0
 */
public class ProxyUtil {

    /**
     * 创建代理对象.
     *
     * @param loader {@link ClassLoader}
     * @param interfaceClass 目标类实现的接口
     * @param interceptor 代理拦截器
     * @param <T> 代理类实现接口类型
     * @return 代理对象
     */
    public static <T> T newProxyInstance(ClassLoader loader,
                                         Class<T> interfaceClass,
                                         ProxyInterceptor interceptor) {
        return (T) Proxy.newProxyInstance(loader, new Class[] {interfaceClass}, interceptor);
    }
}
